<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to you under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<!DOCTYPE html>
<html>
    <head>
        <title>Package documentation for
            org.apache.derbyTesting.functionTests.tests.compatibility</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <p>Classes used to test the compatibility between different versions
        of Derby clients and Derby servers. The main entry point is the
        <tt>_Suite</tt> class, with the other suites as alternatives giving
        more test coverage in terms of the number of combinations tested.</p>

        <p>The MATS version of the compatibility test should be run as part of
        <tt>suites.All</tt>. It is your responsibility to keep the local
        release repository up to date (the default location is
        <tt>$HOME/.derbyTestingReleases/</tt>, this can be overridden by using
        <tt>derbyTesting.oldReleasePath</tt>).</p>

        <p>For non-default runs, the following steps should be considered:</p>
        <ol> <li>Update the release repository (typically a <tt>svn up</tt>)</li>
             <li>If you want to run the LOB tests, set
                <tt>derby.tests.compat.testLOBs</tt> to <tt>true</tt>. Note
                that this will add around five minutes of runtime to each
                combination</li>
             <li>If you want to include only a specific set of releases, set
               <tt>derby.tests.compat.includeReleases</tt>. The format is
               <tt>M.m.f.p[,M.m.f.p]*</tt>, for instance
               <tt>10.9.1.0,10.8.2.2</tt>.</li>

             <li>If you want to exclude certain releases, set
               <tt>derby.tests.compat.excludeReleases</tt>. The format is the
               same as for the include option above.</li>
             <li>Run the suite that best fits your needs; MATS, dev full, old,
               or old full.</li>
        </ol>

        <p>Note that the set of combinations computed depends on the old Derby
        releases that are available through the release repository. For this
        reason it is important to keep the local repository updated. Once
        initialized, i.e <tt>svn co  http://svn.apache.org/repos/asf/db/derby/jars
        $HOME/.derbyTestingReleases</tt>, you only have to update it each time
        a new Derby release comes out.</p>

        <p>Testing the compatibility between a given client driver and a given
        server is best done by running those two components in separate
        processes. This simplifies handling multiple versions of the code base,
        but introduces some challenges for properly handling the external
        processes.</p>

    </body>
</html>
